home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / role / ZorkMachine.lha / zmachine.h < prev    next >
C/C++ Source or Header  |  1992-03-31  |  3KB  |  158 lines

  1. /*
  2. *    @(#)zmachine.h    2.24
  3. */
  4.  
  5. # include <stdio.h>
  6. #undef NULL
  7. #define NULL ((char *)0)
  8. # include <setjmp.h>
  9. # include "config.h"
  10.  
  11. /*char *lmalloc(), *malloc(), *realloc();*/
  12.  
  13. struct dev {
  14.         char *buffer;
  15.         int width;
  16.         int height;
  17.         char *bp;
  18.         int count;
  19.         void (*out_f)();
  20.         int wrap;
  21.         void (*crlf_f)();
  22.     };
  23.  
  24. struct hist_buf {
  25.             int len;
  26.             char *hb;
  27.             char *undo;
  28.         };
  29.  
  30. struct header
  31.     {
  32.         UBYTE zmachine;            /* 00        */
  33.         UBYTE flags;            /* 01        */
  34.         ZWORD release;            /* 02        */
  35.         ZWORD minmem;            /* 04        */
  36.         ZWORD initial_pc;        /* 06        */
  37.         ZWORD vocabulary;        /* 08        */
  38.         ZWORD reserved2;        /* 0a    ?    */
  39.         ZWORD reserved3;        /* 0c    ?    */
  40.         ZWORD save_len;            /* 0e        */
  41.         ZWORD reserved5;        /* 10    zero    */
  42.         UBYTE serial[6];            /* 12        */
  43.         ZWORD short_cuts;        /* 18        */
  44.         ZWORD len;            /* 1a        */
  45.         ZWORD checksum;            /* 1c        */
  46.         ZWORD reserved8;        /* 1e    zero    */
  47.         ZWORD reserved9[16];        /* 20    zero    */
  48.     };
  49.  
  50.  
  51. struct virt_page {
  52.         WORD page;
  53.         unsigned long lru;
  54.         UBYTE *paddr;
  55.     };
  56.  
  57. struct address
  58.     {
  59.         WORD segment;
  60.         WORD offset;        /* MUST be signed        */
  61.     };
  62.  
  63. # define FLUSH        0x7f        /* Flush output buffer        */
  64.  
  65. extern char *story_name;        /* Name of story file        */
  66. extern char print_name[256];
  67. extern int printer_width;        /* Character-width of protocol
  68.                        file                */
  69. extern struct dev *screen, *printer;    /* screen and protocol device
  70.                        structures            */
  71.  
  72. extern int main_l;            /* len of main memory in pages    */
  73. extern UBYTE *main_p;            /* start of main memory        */
  74. extern struct header *main_h;        /* pointer to header structure
  75.                        in main memory        */
  76. extern struct address pc;        /* programcounter        */
  77. extern struct virt_page *pc_page;    /* currently executed page    */
  78.  
  79. extern char *sysname;            /* system name            */
  80.  
  81. /*        from io.c        */
  82.  
  83. struct dev *init_dev();
  84. void    scr_write();
  85. void    prot_write();
  86. void    prot_crlf();
  87. void    output_status();
  88. void    output_chr();
  89. void    output_str();
  90. char    *read_str();
  91. int    save_keys();
  92. int    restore_keys();
  93.  
  94. extern int pfile;
  95.  
  96. /*        from zbios.c        */
  97.  
  98. long    zrandom();
  99. void    con_flush();
  100. void    con_chr();
  101. void    con_str1();
  102. void    con_str2();
  103. void    con_crlf();
  104. void    reverseON();        
  105. void    reverseOFF();
  106. void    cursorON();
  107. void    cursorOFF();
  108. void    gotoXY();
  109. void    storeXY();
  110. int    con_getc();
  111. void    init_con();
  112.  
  113. int    open_story();
  114. int    close_story();
  115. void    read_story();
  116. void    read_header();
  117.  
  118. char    *read_sname();
  119. char    *read_rname();
  120. int    open_save_w();
  121. int    open_save_r();
  122. int    close_save();
  123. int    write_save();
  124. int    read_save();
  125. void    fatal();
  126. void    clean_up();
  127. int    userexit();
  128.  
  129. /*        from mem.c        */
  130.  
  131. void    load_code();
  132. UBYTE    *load_page();
  133. long    ptob();
  134. UWORD    btob();
  135. UWORD    word_get();
  136. void    word_put();
  137. UBYTE    fetchb_data();
  138. UWORD    fetchw_data();
  139. UBYTE    fetchb_op();
  140. UWORD    fetchw_op();
  141. void    baddr_to_vaddr();
  142. void    waddr_to_vaddr();
  143.  
  144. /*        from code.c        */
  145.  
  146. void    decode();
  147. void    encode();
  148.  
  149. #ifdef AMIGA
  150.  
  151. void    ConPutC(unsigned char c);
  152. unsigned char    ConGetC(void);
  153. void    ConPutS(unsigned char *s);
  154. void    ConPutS2(unsigned char *a,unsigned char *b);
  155. void    ConCleanup(void);
  156. char    OpenConsoleStuff(void);
  157. #endif
  158.